// 引入axios，对axios进行二次封装
import axios from 'axios';
import { getUserTempId } from '@/utils/auth'
// 引入nprogress
import nprogress from 'nprogress';
// 引入nprogress样式
import 'nprogress/nprogress.css'
//引入token，通过请求头携带
import { getToken } from '@/utils/auth'

const ajax = axios.create({
  baseURL: '/api',
  timeout: 5000
})

// ajax 请求拦截器
ajax.interceptors.request.use(config => {
  //请求头中携带用户临时标识
  config.headers.userTempId = getUserTempId()
  // 启用进度条
  nprogress.start()
  // 返回 config 配置项
  //往请求头里面追加token
  const token = getToken()
  //如果有token则携带
  if (token) {
    config.headers.token = token
  }

  return config
})

// ajax 响应拦截器
ajax.interceptors.response.use(
  res => {
    // 停止进度条
    nprogress.done()
    // 返回响应成功的数据
    return res.data
  },
  err => {
    // 停止进度条
    nprogress.done()
    // 中断 Promise 链
    return new Promise(() => { })
  }
)

export default ajax